package com.wtb.javatool.dao;

import com.wtb.javatool.dto.CourseDto;
import com.wtb.javatool.entity.Course;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface CourseMapper {

    /**
     * 根据课程的ID查找课程。
     *
     * @param courseId 课程的ID，用于唯一标识课程。
     * @return 查找到的课程对象（只查询项目式驱动的课程），如果未找到则返回null。
     */
    List<Course> findCourseByCourseId(Long courseId);

    /**
     * 根据课程的名称查找课程。
     *
     * @param courseName 课程的名称，用于查找课程。
     * @return 查找到的课程列表（只查询项目式驱动的课程），如果没有找到具有该名称的课程，则返回一个空列表。
     */
    List<Course> findCourseByCourseName(String courseName);

    /**
     * 查询跟教师用户相关的所有课程
     *
     * @param userId 用户id
     * @param courseName 课程名称
     * @param begin   当前数位置
     * @param size    发现多少条
     * @return 课程信息与关联的项目和教师用户
     */
    List<CourseDto> findCoursesByUserId(@Param("userId") Long userId,
                                        @Param("courseName") String courseName,
                                        @Param("begin") Integer begin,
                                       @Param("size") Integer size);
    /**
     * 查询跟教师用户相关的所有课程的个数
     *
     * @param userId 用户id
     * @param courseName 课程名称
     * @return 所有课程的个数
     */
    Integer findCoursesByUserIdCount(@Param("userId")Long userId, @Param("courseName") String courseName);

}
